#include<stdio.h>
typedef struct student{
    char name[20];
	int age;
	float scores;
}student;

void main() {
	student data[5], temp;
	char num;
	char c;
	for (int i = 0; i<5; i++) {
		fflush(stdin);
		printf("请输入第%d个学生的姓名：", i + 1);
		gets(data[i].name);
		printf("请输入第%d个学生的年龄：", i + 1);
		scanf_s("%d", &data[i].age);
		printf("请输入第%d个学生的成绩：", i + 1);
		scanf_s("%f", &data[i].scores);
		getchar();
		
		
	}
	do {
		printf("********************************************************************************\n");
		printf("**  请选择您要访问的功能（1/2/3/0）：                                         **\n");
		printf("**  1.输出全部学生信息                                                        **\n");
		printf("**  2.按分数降序输出学生信息                                                  **\n");
		printf("**  3.按年龄升序输出学生信息                                                  **\n");
		printf("**  0.退出程序                                                                **\n");
		printf("********************************************************************************\n");
		printf("请选择您要访问的功能(1/2/3/0)：");
		fflush(stdin);
		gets(&num);
		switch (num) {
		case '1':
			printf("输出全部学生信息如下：\n");
			for (int i = 0; i<5; i++) {
				printf("第%d个学生的姓名是：%s\t年龄是：%d\t成绩是：%.1f\n", i + 1, data[i].name, data[i].age, data[i].scores);
			}
			break;
		case '2':
			printf("按分数降序输出学生信息如下：\n");
			for (int i = 0; i<5; i++) {
				for (int j = i + 1; j<5; j++) {
					student temp;
					if (data[i].scores < data[j].scores) {
						temp = data[i];
						data[i] = data[j];
						data[j] = temp;
					}
				}
				printf("第%d个学生的姓名是：%s\t年龄是：%d\t成绩是：%.1f\n", i + 1, data[i].name, data[i].age, data[i].scores);
			}
			break;
		case '3':
			printf("按年龄升序输出学生信息如下：\n");
			for (int i = 0; i<5; i++) {
				for (int j = i + 1; j<5; j++) {
					if (data[i].age < data[j].age) {
						temp = data[i];
						data[i] = data[j];
						data[j] = temp;
					}
				}
				printf("第%d个学生的姓名是：%s\t年龄是：%d\t成绩是：%.1f\n", i + 1, data[i].name, data[i].age, data[i].scores);
			}
			break;
		case '0':
			printf("您已退出程序！\n");
			break;
		default:
			printf("你的输入有误！是否继续<y/n>:\n");
			fflush(stdin);
			
			gets(&c);
			while (c != 'y' && c != 'n') {
				fflush(stdin);
				printf("你的输入有误！是否继续<y/n>:\n");
				gets(&c);
			}
			if (c == 'n')
				break;
		}
	} 
	while ((c == 'y') || (num >= 0 && num<4));
}